package org.lq.shopping.service.impl;

import java.util.List;

import org.lq.shopping.dao.MenuDao;
import org.lq.shopping.dao.impl.MenuDaoImpl;
import org.lq.shopping.entity.Menu;
import org.lq.shopping.service.MenuService;
import org.lq.shopping.util.RedisUtil;

import com.google.gson.Gson;

import redis.clients.jedis.Jedis;

/**
 *  菜单业务层接口实现类
 * @author dj
 * 时间：2018年9月29日
 *
 */
public class MenuServiceImpl  implements MenuService{
	
	private MenuDao dao=new MenuDaoImpl();//菜单数据操作类
	private Jedis jedis=RedisUtil.getJedis();//redis 
	private Gson gson=new Gson();
	private List<Menu> menuList;
	public  MenuServiceImpl() { 
		 init();//初始化菜单，从数据库中查询全部菜单，并插入到redis中
		 
	}
	/**
	 *  添加菜单
	 */
	@Override
	public boolean addMenu(Menu menu) {
		String json= gson.toJson(menu);//将菜单java对象转换为json
		jedis.set(menu.getMenu_name(), json);//向Redis中添加菜单
		return dao.add(menu)>0;//向从数据库删除添加菜单
	}
	/**
	 *  删除菜单
	 */
	@Override
	public boolean deleteMenu(Menu menu) {
		String json= gson.toJson(menu);//将菜单java对象转换为json
		jedis.del(menu.getMenu_name());//从Redis中删除
		return dao.delete(menu.getMenu_id())>0;//从数据库删除
	}
	/**
	 * 修改菜单
	 */
	@Override
	public boolean updateMenu(Menu menu) {
		String json= gson.toJson(menu);//将菜单java对象转换为json
		jedis.set(menu.getMenu_name(), json);//从Redis中修改相应的菜单
		return dao.update(menu)>0;//从数据库中修改相应的菜单
	}
	/**
	 *  返回全部菜单
	 */
	@Override
	public List<Menu> findAll() {

		return  menuList;
		
	}
	/**
	 *  初始化函数
	 */
	private void init() {
		jedis.flushAll();//清空REDIS 库中的所有内容
		menuList=dao.findAll();//从数据库中查找全部菜单
		  String json=	null;
	  for (Menu menu : menuList) {
		  json=gson.toJson(menu);//将全部菜单转换为json
		  jedis.set(menu.getMenu_name(), json);//将菜单全部插入到Redis数据库中
	}
	}

}
